MongoDB একটি জনপ্রিয় NoSQL ডেটাবেস যা ডেটা সংরক্ষণের জন্য অনেক সুবিধা প্রদান করে। তবে, কোনো ডেটাবেসে নিরাপত্তা খুবই গুরুত্বপূর্ণ, বিশেষ করে যখন ডেটাবেসে সংবেদনশীল বা গোপনীয় তথ্য সংরক্ষণ করা হয়। MongoDB তে SSL/TLS এনক্রিপশন এবং ডেটা এনক্রিপশন দুটি নিরাপত্তা ফিচার রয়েছে যা ডেটা নিরাপদ রাখতে সাহায্য করে।
এখানে, MongoDB তে SSL/TLS এনক্রিপশন এবং ডেটা এনক্রিপশন ব্যবহার করার জন্য Java MongoDB ড্রাইভার কিভাবে কনফিগার করতে হয় তা আলোচনা করা হবে।
SSL/TLS এনক্রিপশন
SSL (Secure Sockets Layer) এবং TLS (Transport Layer Security) হল নিরাপত্তা প্রোটোকল যা ডেটাবেস সার্ভার এবং ক্লায়েন্টের মধ্যে যোগাযোগের সময় ডেটার গোপনীয়তা এবং অখণ্ডতা রক্ষা করে। MongoDB তে SSL/TLS ব্যবহার করে আপনি ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটা ট্রান্সমিশন এনক্রিপ্ট করতে পারেন, যাতে তৃতীয় পক্ষের দ্বারা ডেটা চুরির সম্ভাবনা কমে যায়।
MongoDB তে SSL/TLS কনফিগারেশন
১. MongoDB সার্ভারে SSL/TLS চালু করা
MongoDB সার্ভারে SSL/TLS এনক্রিপশন সক্ষম করতে, প্রথমে সার্ভারে SSL সার্টিফিকেট ইনস্টল করতে হবে এবং সার্ভার কনফিগারেশন ফাইলে SSL সম্পর্কিত অপশন সেট করতে হবে।
MongoDB সার্ভারের কনফিগারেশন ফাইল mongod.conf এ নিম্নলিখিত সেটিংস যুক্ত করুন:
net:
ssl:
mode: requireSSL
PEMKeyFile: /path/to/your/certificate.pem
PEMKeyPassword: your_password
এখানে PEMKeyFile আপনার সার্টিফিকেটের পাথ এবং PEMKeyPassword হল আপনার সার্টিফিকেটের পাসওয়ার্ড।
২. MongoDB ক্লায়েন্টে SSL/TLS কনফিগারেশন
Java MongoDB ক্লায়েন্টে SSL/TLS এনক্রিপশন সক্রিয় করতে, MongoClient এর কনফিগারেশন সেট করতে হবে।
import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;
MongoClientURI uri = new MongoClientURI("mongodb://localhost:27017/?ssl=true&sslInvalidHostNameAllowed=true");
MongoClient mongoClient = new MongoClient(uri);
এখানে ssl=true এর মাধ্যমে SSL/TLS এনক্রিপশন সক্ষম করা হয়েছে। sslInvalidHostNameAllowed=true বিকল্পটি সার্ভারের হোস্টনেমের যাচাই না করার জন্য ব্যবহৃত হয়, যা পরীক্ষার জন্য সুবিধাজনক হতে পারে।
MongoDB তে ডেটা এনক্রিপশন
MongoDB তে ডেটা এনক্রিপশন দুটি মূল স্তরে করা যেতে পারে:
- ইন-ডাটা এনক্রিপশন (At-Rest Encryption): ডেটাবেসে সংরক্ষিত ডেটা এনক্রিপ্ট করা।
- ইন-ট্রানজিট এনক্রিপশন (In-Transit Encryption): সার্ভার এবং ক্লায়েন্টের মধ্যে পাঠানো ডেটা এনক্রিপ্ট করা।
MongoDB এ ডেটা এনক্রিপশন প্রক্রিয়া বিভিন্নভাবে কনফিগার করা যায়, তবে সবচেয়ে সাধারণ পদ্ধতি হল Encryption at Rest এবং Field-Level Encryption।
১. Encryption at Rest
MongoDB তে ইন-ডাটা এনক্রিপশন সক্রিয় করতে, আপনি Encrypted Storage Engine ব্যবহার করতে পারেন, যা ডেটা ডিস্কে স্টোর হওয়ার সময় এনক্রিপ্ট করে।
MongoDB এ ইন-ডাটা এনক্রিপশন সক্ষম করতে, আপনাকে MongoDB Enterprise সংস্করণ ব্যবহার করতে হবে এবং কনফিগারেশন ফাইলে এনক্রিপশন সেটিংস যোগ করতে হবে।
MongoDB তে এনক্রিপশন কনফিগারেশন:
MongoDB সার্ভারের কনফিগারেশন ফাইলে নিম্নলিখিত সেটিংস যুক্ত করুন:
security:
encryption:
enabled: true
encryptionKeyFile: /path/to/your/encryptionKeyFile
এখানে encryptionKeyFile হল আপনার এনক্রিপশন কীর ফাইলের পাথ।
২. Field-Level Encryption
MongoDB তে ফিল্ড-লেভেল এনক্রিপশন সক্রিয় করতে, আপনি MongoDB ড্রাইভার ব্যবহার করে নির্দিষ্ট ফিল্ড এনক্রিপ্ট করতে পারেন। এটি সংবেদনশীল ডেটা যেমন পাসওয়ার্ড, ক্রেডেনশিয়াল, বা আর্থিক তথ্যের জন্য উপকারী।
MongoDB Java ড্রাইভার ব্যবহার করে ফিল্ড-লেভেল এনক্রিপশন কনফিগার করা যায়।
Java MongoDB ড্রাইভার ব্যবহার করে ফিল্ড-লেভেল এনক্রিপশন:
import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import org.bson.Document;
import org.bson.types.Binary;
MongoClientURI uri = new MongoClientURI("mongodb://localhost:27017");
MongoClient mongoClient = new MongoClient(uri);
MongoDatabase database = mongoClient.getDatabase("myDatabase");
Document sensitiveData = new Document("username", "JohnDoe")
.append("password", new Binary(encryptPassword("secretPassword")));
database.getCollection("users").insertOne(sensitiveData);
এখানে encryptPassword ফাংশনটি একটি এনক্রিপশন কীগ্রহণ করে এবং পাসওয়ার্ড এনক্রিপ্ট করে।
MongoDB তে SSL/TLS এবং ডেটা এনক্রিপশন ব্যবহার করে আপনি আপনার ডেটাবেসের নিরাপত্তা নিশ্চিত করতে পারেন। SSL/TLS ব্যবহারের মাধ্যমে ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটার ট্রান্সমিশন এনক্রিপ্ট করা যায়, যা ডেটার গোপনীয়তা এবং অখণ্ডতা রক্ষা করে। ডেটা এনক্রিপশন (ইন-ডাটা এবং ফিল্ড-লেভেল) MongoDB তে সংবেদনশীল তথ্য নিরাপদ রাখতে সহায়ক। Java MongoDB ড্রাইভার ব্যবহার করে এই নিরাপত্তা ফিচারগুলি কনফিগার করা সহজ এবং কার্যকর।
Read more